2.1.8 本节习题精选
一、单项选择题
01.一个进程映像是()。
C
进程映像是PCB、程序段和数据的组合,其中PCB是进程存在的唯一标志。
进程映像是PCB、程序段和数据的组合,其中PCB是进程存在的唯一标志。
02.下列关于线程的叙述中,正确的是()。
A
线程的CPU现场指的是线程在运行时所需的一组寄存器的值,包括程序计数器、状态寄存器、通用寄存器和栈指针等。当线程切换时,操作系统会保存当前线程的CPU现场,并恢复下一个线程的CPU现场,以保证线程的正确执行。线程是CPU调度的基本单位,当然可以独立执行程序,A正确。线程没有自己独立的地址空间,它共享其所属进程的空间,B错误。进程可以创建多个线程,C错误。与进程之间线程的通信可以直接通过它们共享的存储空间, D错误。
线程的CPU现场指的是线程在运行时所需的一组寄存器的值,包括程序计数器、状态寄存器、通用寄存器和栈指针等。当线程切换时,操作系统会保存当前线程的CPU现场,并恢复下一个线程的CPU现场,以保证线程的正确执行。线程是CPU调度的基本单位,当然可以独立执行程序,A正确。线程没有自己独立的地址空间,它共享其所属进程的空间,B错误。进程可以创建多个线程,C错误。与进程之间线程的通信可以直接通过它们共享的存储空间, D错误。
03.进程之间交换数据不能通过()途径进行。
C
每个进程包含独立的地址空间,进程各自的地址空间是私有的,只能执行自己地址空间中的程序,且只能访问自己地址空间中的数据,相互访问会导致指针的越界错误(学完内存管理将有更好的认识)。因此,进程之间不能直接交换数据,但可利用操作系统提供的共享文件、消息传递、共享存储区等进行通信。
每个进程包含独立的地址空间,进程各自的地址空间是私有的,只能执行自己地址空间中的程序,且只能访问自己地址空间中的数据,相互访问会导致指针的越界错误(学完内存管理将有更好的认识)。因此,进程之间不能直接交换数据,但可利用操作系统提供的共享文件、消息传递、共享存储区等进行通信。
04.进程与程序的根本区别是()。
A
动态性是进程最重要的特性,以此来区分文件形式的静态程序。操作系统引入进程的概念,是为了从变化的角度动态地分析和研究程序的执行。
动态性是进程最重要的特性,以此来区分文件形式的静态程序。操作系统引入进程的概念,是为了从变化的角度动态地分析和研究程序的执行。
05.下列关于并发进程特性的叙述中,正确的是()。
D
并发进程可能因等待资源或因被抢占CPU而暂停运行,其生命周期是不连续的。执行速度会影响进程之间的执行顺序和内存冲突问题,从而导致不同的操作结果。并发进程之间存在相互竞争和制约,导致每次运行可能得到不同的结果,D正确。
并发进程可能因等待资源或因被抢占CPU而暂停运行,其生命周期是不连续的。执行速度会影响进程之间的执行顺序和内存冲突问题,从而导致不同的操作结果。并发进程之间存在相互竞争和制约,导致每次运行可能得到不同的结果,D正确。
06.下列叙述中,正确的是()。
A
选项B错在优先级分静态和动态两种,动态优先级是根据运行情况而随时调整的。选项C错在系统发生死锁时有可能进程全部都处于阻塞态,CPU空闲。选项D错在进程申请处理器得不到满足时就处于就绪态,等待处理器的调度。
选项B错在优先级分静态和动态两种,动态优先级是根据运行情况而随时调整的。选项C错在系统发生死锁时有可能进程全部都处于阻塞态,CPU空闲。选项D错在进程申请处理器得不到满足时就处于就绪态,等待处理器的调度。
07.并发进程执行的相对速度是()。
C
并发进程执行的相对速度与进程调度策略有关,因为进程调度策略决定了哪些进程可以获得处理机,以及获得处理机的时间长短,从而影响进程执行的速度和效率。
并发进程执行的相对速度与进程调度策略有关,因为进程调度策略决定了哪些进程可以获得处理机,以及获得处理机的时间长短,从而影响进程执行的速度和效率。
08.下列任务中,()不是由进程创建原语完成的。
C
进程创建原语的执行过程:申请空白PCB,并为新进程申请一个唯一的数字标识符。为新进程分配资源,包括内存、I/O设备等。初始化PCB,将新进程插入就绪队列。从上述过程可以看出,为进程分配CPU不是由进程创建原语完成的,而是由进程调度实现的。
进程创建原语的执行过程:申请空白PCB,并为新进程申请一个唯一的数字标识符。为新进程分配资源,包括内存、I/O设备等。初始化PCB,将新进程插入就绪队列。从上述过程可以看出,为进程分配CPU不是由进程创建原语完成的,而是由进程调度实现的。
09.下列关于进程和程序的叙述中,错误的是()。
B
一个进程可以顺序地执行一个或多个程序,只要在执行过程中改变其CPU状态和内存空间即可,但不能同时执行多个程序,B错误,A正确。一个程序可以对应多个进程,即多个进程可以执行同一个程序。例如,同一个文本编辑器可以被多个用户或多个窗口同时运行,每次运行都形成一个新进程。一个程序在执行过程中也可产生多个进程。例如,一个程序可以通过系统调用 fork(O或create()来创建子进程,从而实现并发处理或分布式计算。C和D正确。
一个进程可以顺序地执行一个或多个程序,只要在执行过程中改变其CPU状态和内存空间即可,但不能同时执行多个程序,B错误,A正确。一个程序可以对应多个进程,即多个进程可以执行同一个程序。例如,同一个文本编辑器可以被多个用户或多个窗口同时运行,每次运行都形成一个新进程。一个程序在执行过程中也可产生多个进程。例如,一个程序可以通过系统调用 fork(O或create()来创建子进程,从而实现并发处理或分布式计算。C和D正确。
10.下列选项中,导致创建新进程的操作是()。
I.用户登陆
Ⅱ.高级调度发生时
Ⅲ.操作系统响应用户提出的请求
Ⅳ.用户打开了一个浏览器程序
D
用户登录时,操作系统会为用户创建一个登录进程,用于验证用户身份和提供用户界面。高级调度即作业调度,会从后备队列上选择一个作业调入内存,并为之创建相应的进程。操作系统响应用户提出的请求时,通常会为用户创建一个子进程,用于执行用户指定的任务或程序。用户打开一个浏览器程序时,也是一种操作系统响应用户请求的情况,同样会创建一个新进程。
用户登录时,操作系统会为用户创建一个登录进程,用于验证用户身份和提供用户界面。高级调度即作业调度,会从后备队列上选择一个作业调入内存,并为之创建相应的进程。操作系统响应用户提出的请求时,通常会为用户创建一个子进程,用于执行用户指定的任务或程序。用户打开一个浏览器程序时,也是一种操作系统响应用户请求的情况,同样会创建一个新进程。
11.操作系统是根据()来对并发执行的进程进行控制和管理的。
B
在进程的整个生命周期中,系统总是通过其PCB对进程进行控制。也就是说,系统是根据进程的PCB而非任何其他因素来感知到进程存在的,PCB是进程存在的唯一标志。同时PCB常驻内存。A和D选项的内容都包含在进程PCB中。
在进程的整个生命周期中,系统总是通过其PCB对进程进行控制。也就是说,系统是根据进程的PCB而非任何其他因素来感知到进程存在的,PCB是进程存在的唯一标志。同时PCB常驻内存。A和D选项的内容都包含在进程PCB中。
12.在任何时刻,一个进程的状态变化()引起另一个进程的状态变化。
C
一个进程的状态变化可能会引起另一个进程的状态变化。例如,一个进程时间片用完,可能会引起另一个就绪进程的运行。同时,一个进程的状态变化也可能不会引起另一个进程的状态变化。例如,一个进程由阻塞态转变为就绪态就不会引起其他进程的状态变化。
一个进程的状态变化可能会引起另一个进程的状态变化。例如,一个进程时间片用完,可能会引起另一个就绪进程的运行。同时,一个进程的状态变化也可能不会引起另一个进程的状态变化。例如,一个进程由阻塞态转变为就绪态就不会引起其他进程的状态变化。
13.在单处理器系统中,若同时存在10个进程,则处于就绪队列中的进程最多有()个。
C
不可能出现这样一种情况。单处理器系统的10个进程都处于就绪态,但9个处于就绪态 1个正在运行是可能存在的。还要想到,可能10个进程都处于阻塞态。
不可能出现这样一种情况。单处理器系统的10个进程都处于就绪态,但9个处于就绪态 1个正在运行是可能存在的。还要想到,可能10个进程都处于阻塞态。
14.一个进程释放了一台打印机,它可能会改变()的状态。
C
由于打印机是独占资源,当一个进程释放打印机后,另一个等待打印机的进程就可能从阻塞态转到就绪态。当然,也存在一个进程执行完毕后由运行态转为终止态时释放打印机的情况,但这并不是由于释放打印机引起的,相反是因为运行完成才释放了打印机。
由于打印机是独占资源,当一个进程释放打印机后,另一个等待打印机的进程就可能从阻塞态转到就绪态。当然,也存在一个进程执行完毕后由运行态转为终止态时释放打印机的情况,但这并不是由于释放打印机引起的,相反是因为运行完成才释放了打印机。
15.系统进程所请求的一次I/O操作完成后,将使进程状态从()。
D
I/O操作完成之前进程在等待结果,状态为阻塞态:完成后进程等待事件就绪,变为就绪态。
I/O操作完成之前进程在等待结果,状态为阻塞态:完成后进程等待事件就绪,变为就绪态。
16.一个进程的基本状态可以从其他两种基本状态转变过去,这个基本的状态一定是()。
C
只有就绪态可以既由运行态转变过去又能由阻塞态转变过去。时间片到,运行态变为就绪态:当所需要资源到达时,进程由阻塞态转变为就绪态。
只有就绪态可以既由运行态转变过去又能由阻塞态转变过去。时间片到,运行态变为就绪态:当所需要资源到达时,进程由阻塞态转变为就绪态。
17.在分时系统中,通常处于()的进程最多。
B
分时系统中处于就绪态的进程最多,这些进程都在争夺CPU的使用权,而CPU的数量是有限的。处于运行态的进程只能有一个或少数几个。处于阻塞态的进程也不会太多,阻塞事件的发生频率不会太高。处于终止态的进程也不多,这些进程已释放资源,不再占用内存空间。
分时系统中处于就绪态的进程最多,这些进程都在争夺CPU的使用权,而CPU的数量是有限的。处于运行态的进程只能有一个或少数几个。处于阻塞态的进程也不会太多,阻塞事件的发生频率不会太高。处于终止态的进程也不多,这些进程已释放资源,不再占用内存空间。
18.并发进程失去封闭性,是指()。
D
程序封闭性是指进程执行的结果只取决于进程本身,不受外界影响。也就是说,进程在执行过程中不管是不停顿地执行,还是走走停停,进程的执行速度都不会改变它的执行结果。失去封闭性后,不同速度下的执行结果不同。
程序封闭性是指进程执行的结果只取决于进程本身,不受外界影响。也就是说,进程在执行过程中不管是不停顿地执行,还是走走停停,进程的执行速度都不会改变它的执行结果。失去封闭性后,不同速度下的执行结果不同。
19.通常用户进程被建立后,()。
B
进程有它的生命周期,不会一直存在于系统中,也不一定需要用户显式地撤销。进程在时间片结束时只是就绪,而不是撤销。阻塞和唤醒是进程生存期的中间状态。进程可在完成时撤销,或在出现内存错误等时撤销。
进程有它的生命周期,不会一直存在于系统中,也不一定需要用户显式地撤销。进程在时间片结束时只是就绪,而不是撤销。阻塞和唤醒是进程生存期的中间状态。进程可在完成时撤销,或在出现内存错误等时撤销。
20.进程在处理器上执行时,()。
D
选项A和B都说得太绝对,进程之间有可能具有相关性,也有可能是相互独立的。选项C错在“同时”。
选项A和B都说得太绝对,进程之间有可能具有相关性,也有可能是相互独立的。选项C错在“同时”。
21.下面的说法中,正确的是()。
C
引入线程后,进程仍然是资源分配的单位。内核级线程是处理器调度和分派的单位,线程本身不具有资源,它可以共享所属进程的全部资源,选项C对,选项B、D明显是错的。至于选项 A,可以这样来理解:假如有一个内核进程,它映射到用户级后有多个线程,那么这些线程之间的切换不需要在内核级切换进程,也就不需要内核的支持。
引入线程后,进程仍然是资源分配的单位。内核级线程是处理器调度和分派的单位,线程本身不具有资源,它可以共享所属进程的全部资源,选项C对,选项B、D明显是错的。至于选项 A,可以这样来理解:假如有一个内核进程,它映射到用户级后有多个线程,那么这些线程之间的切换不需要在内核级切换进程,也就不需要内核的支持。
22.在多对一的线程模型中,当一个多线程进程中的某个线程被阻塞后,()。
B
在多对一的线程模型中,由于只有一个内核级线程,用户级线程的“多”对操作系统透明,因此操作系统内核只能感知到一个调度单位的存在。因此该进程的一个线程被阻塞后,该进程就被阻塞,进程的其他线程当然也都被阻塞。注,作为对比,在一对一模型中将每个用户级线程都映射到一个内核级线程,所以当某个线程被阻塞时,不会导致整个进程被阻塞。
在多对一的线程模型中,由于只有一个内核级线程,用户级线程的“多”对操作系统透明,因此操作系统内核只能感知到一个调度单位的存在。因此该进程的一个线程被阻塞后,该进程就被阻塞,进程的其他线程当然也都被阻塞。注,作为对比,在一对一模型中将每个用户级线程都映射到一个内核级线程,所以当某个线程被阻塞时,不会导致整个进程被阻塞。
23.用信箱实现进程间互通信息的通信机制要有两个通信原语,它们是()。
C
用信箱实现进程间互通信息的通信机制要有两个通信原语,它们是发送原语和接收原语。
用信箱实现进程间互通信息的通信机制要有两个通信原语,它们是发送原语和接收原语。
24.速度最快的进程通信方式是()。
C
消息传递需要在内核和用户空间中进行数据的拷贝,而且需要对消息进行格式化和排队,这些都会增加通信的开销。套接字(Socket)通常用于不同机器之间的进程通信,需要经过传输层以下的协议栈,而且可能涉及数据的加密和压缩,这些都会降低通信的速度。共享内存允许多个进程直接访问同一块物理内存,不需要任何数据的拷贝和中介,是最快的进程通信方式。管道需要在内核和用户空间进行数据的拷贝,而且一般是单向传输,降低了通信的效率。
消息传递需要在内核和用户空间中进行数据的拷贝,而且需要对消息进行格式化和排队,这些都会增加通信的开销。套接字(Socket)通常用于不同机器之间的进程通信,需要经过传输层以下的协议栈,而且可能涉及数据的加密和压缩,这些都会降低通信的速度。共享内存允许多个进程直接访问同一块物理内存,不需要任何数据的拷贝和中介,是最快的进程通信方式。管道需要在内核和用户空间进行数据的拷贝,而且一般是单向传输,降低了通信的效率。
25.信箱通信是一种()通信方式。
B
信箱通信属于消息传递中的间接通信方式,因为信箱通信借助于收发双方进程之外的共享数据结构作为通信中转,发送方和接收方不直接建立联系,没有处理时间上的限制,发送方可以在任何时间发送信息,接收方也可以在任何时间接收信息。
信箱通信属于消息传递中的间接通信方式,因为信箱通信借助于收发双方进程之外的共享数据结构作为通信中转,发送方和接收方不直接建立联系,没有处理时间上的限制,发送方可以在任何时间发送信息,接收方也可以在任何时间接收信息。
26.下列几种关于进程的叙述,()最不符合操作系统对进程的理解
A
进程是一个独立的运行单位,也是操作系统进行资源分配和调度的基本单位,它包括PCB、程序和数据以及执行栈区,仅仅说进程是在多程序环境下的完整程序是不合适的,因为程序是静态的,它以文件形式存放于计算机硬盘内,而进程是动态的。
进程是一个独立的运行单位,也是操作系统进行资源分配和调度的基本单位,它包括PCB、程序和数据以及执行栈区,仅仅说进程是在多程序环境下的完整程序是不合适的,因为程序是静态的,它以文件形式存放于计算机硬盘内,而进程是动态的。
27.若一个进程实体由PCB、共享正文段、数据堆段和数据栈段组成,请指出下列C语言程序中的内容及相关数据结构各位于哪一段中。
Ⅰ.全局赋值变量()
Ⅱ.未赋值的局部变量()
Ⅲ.函数调用实参传递值()
Ⅳ.用malloc()要求动态分配的存储区()
Ⅴ.常量值(如1995、"string")()
Ⅵ.进程的优先级()
B、D、D、C、B、A
C语言编写的程序在使用内存时一般分为三个段,它们一般是正文段(代码和赋值数据段)、数据堆段和数据栈段。二进制代码和常量存放在正文段,动态分配的存储区在数据堆段,临时使用的变量在数据栈段。由此,我们可以确定全局赋值变量在正文段赋值数据段,未赋值的局部变量和实参传递在栈段,动态内存分配在堆段,常量在正文段,进程的优先级只能在PCB内。
C语言编写的程序在使用内存时一般分为三个段,它们一般是正文段(代码和赋值数据段)、数据堆段和数据栈段。二进制代码和常量存放在正文段,动态分配的存储区在数据堆段,临时使用的变量在数据栈段。由此,我们可以确定全局赋值变量在正文段赋值数据段,未赋值的局部变量和实参传递在栈段,动态内存分配在堆段,常量在正文段,进程的优先级只能在PCB内。
28.同一程序经过多次创建,运行在不同的数据集上,形成了()的进程。
A
进程是程序的一次执行过程,它不仅包括程序的代码,而且包括程序的数据和状态。同一个程序经过多次创建,运行在不同的数据集上,会形成不同的进程,它们之间没有必然的联系。
进程是程序的一次执行过程,它不仅包括程序的代码,而且包括程序的数据和状态。同一个程序经过多次创建,运行在不同的数据集上,会形成不同的进程,它们之间没有必然的联系。
29.PCB是进程存在的唯一标志,下列()不属于PCB。
D
进程实体主要是代码、数据和PCB。因此,要清楚了解PCB内所含的数据结构内容,主要有四大类:进程标志信息、进程控制信息、进程资源信息、CPU现场信息。由上述可知,全局变量与PCB无关,它只与用户代码有关。
进程实体主要是代码、数据和PCB。因此,要清楚了解PCB内所含的数据结构内容,主要有四大类:进程标志信息、进程控制信息、进程资源信息、CPU现场信息。由上述可知,全局变量与PCB无关,它只与用户代码有关。
30.进程控制块(PCB)是进程的重要组成部分,PCB中不应该包括()。
D
PCB是操作系统中用于管理和控制进程的数据结构,它包含进程的基本信息,如进程标识符进程状态、程序计数器、寄存器、内存分配情况、打开文件列表、进程优先级等。PCB中不应该包括互斥信号量,互斥信号量是一种用于实现进程同步和互斥的工具,它不是进程本身的属性。互斥信号量通常存储在内核或共享内存中,而不存储在PCB中。
PCB是操作系统中用于管理和控制进程的数据结构,它包含进程的基本信息,如进程标识符进程状态、程序计数器、寄存器、内存分配情况、打开文件列表、进程优先级等。PCB中不应该包括互斥信号量,互斥信号量是一种用于实现进程同步和互斥的工具,它不是进程本身的属性。互斥信号量通常存储在内核或共享内存中,而不存储在PCB中。
31.一个计算机系统中,进程的最大数目主要受到()限制。
A
进程创建需要占用系统内存来存放PCB的数据结构,所以一个系统能够创建的进程总数是有限的,进程的最大数目取决于系统内存的大小,它在系统安装时就已确定(若后期内存增加,系统能够创建的进程总数也应增加)。而用户数目、外设数量和文件等均与此无关。
进程创建需要占用系统内存来存放PCB的数据结构,所以一个系统能够创建的进程总数是有限的,进程的最大数目取决于系统内存的大小,它在系统安装时就已确定(若后期内存增加,系统能够创建的进程总数也应增加)。而用户数目、外设数量和文件等均与此无关。
32.进程创建完成后会进入一个序列,这个序列称为()。
C
在单处理器系统中,不能同时执行多个进程,只能在某个时间段内轮流执行,这就是并发。而通道设备是一种专门用于处理/O操作的硬件,它可以与CPU同时工作,这就是并行。
在单处理器系统中,不能同时执行多个进程,只能在某个时间段内轮流执行,这就是并发。而通道设备是一种专门用于处理/O操作的硬件,它可以与CPU同时工作,这就是并行。
33.在具有通道设备的单处理器系统中实现并发技术后,()。
C
在单处理器系统中,不能同时执行多个进程,只能在某个时间段内轮流执行,这就是并发。而通道设备是一种专门用于处理I/O操作的硬件,它可以与CPU同时工作,这就是并行。
在单处理器系统中,不能同时执行多个进程,只能在某个时间段内轮流执行,这就是并发。而通道设备是一种专门用于处理I/O操作的硬件,它可以与CPU同时工作,这就是并行。
34.进程自身决定()。
A
只有从运行态到阻塞态的转换是由进程自身决定的。从运行态到就绪态的转换是由于进程的时间片用完,“主动”调用程序转向就绪态。虽然从就绪态到运行态的转换同样是由调度程序决定的,但进程是“被动的”。从阻塞态到就绪态的转换是由协作进程决定的。
只有从运行态到阻塞态的转换是由进程自身决定的。从运行态到就绪态的转换是由于进程的时间片用完,“主动”调用程序转向就绪态。虽然从就绪态到运行态的转换同样是由调度程序决定的,但进程是“被动的”。从阻塞态到就绪态的转换是由协作进程决定的。
35.对进程的管理和控制使用()。
B
对进程的管理和控制功能是通过执行各种原语来实现的,如创建原语等
对进程的管理和控制功能是通过执行各种原语来实现的,如创建原语等
36.下面的叙述中,正确的是()。
D
在同一进程中,线程的切换不会引起进程的切换。当从一个进程中的线程切换到另一个进程中的线程时,才会引起进程的切换,因此选项A、B、C错误。
在同一进程中,线程的切换不会引起进程的切换。当从一个进程中的线程切换到另一个进程中的线程时,才会引起进程的切换,因此选项A、B、C错误。
37.下面的叙述中,正确的是()。
B
线程是进程内一个相对独立的执行单元,但不能脱离进程单独运行,只能在进程中运行。引入线程是为了减少程序执行时的时空开销。一个进程可包含一个或多个线程。
线程是进程内一个相对独立的执行单元,但不能脱离进程单独运行,只能在进程中运行。引入线程是为了减少程序执行时的时空开销。一个进程可包含一个或多个线程。
38.下面的叙述中,正确的是()。
D
同一个进程或不同进程内的线程可以并发执行,并发是指多个线程在一段时间内交替执行,而不一定是同时执行的。在多核CPU中,同一个进程或不同进程内的线程可以并行执行,并行是指多个线程在同一时刻同时执行。如果实现了并行,那么一定也实现了并发。
同一个进程或不同进程内的线程可以并发执行,并发是指多个线程在一段时间内交替执行,而不一定是同时执行的。在多核CPU中,同一个进程或不同进程内的线程可以并行执行,并行是指多个线程在同一时刻同时执行。如果实现了并行,那么一定也实现了并发。
39.下列选项中,()不是线程的优点。
B
一个进程可以包含一个或多个线程,但一个线程只能属于一个进程,A错误。线程共享进程的资源,但线程之间不能无约束地并行执行,因为线程之间还需要进行同步和互斥,以免造成数据的不一致和冲突,C错误。线程又称轻量级进程,但并不能说所有线程都比进程小,当一个进程只有一个线程时,线程和进程就是一样大的,D错误。B显然正确。
一个进程可以包含一个或多个线程,但一个线程只能属于一个进程,A错误。线程共享进程的资源,但线程之间不能无约束地并行执行,因为线程之间还需要进行同步和互斥,以免造成数据的不一致和冲突,C错误。线程又称轻量级进程,但并不能说所有线程都比进程小,当一个进程只有一个线程时,线程和进程就是一样大的,D错误。B显然正确。
41.在以下描述中,()并不是多线程系统的特长。
C
整个系统只有一个键盘,而且键盘输入是人的操作,速度比较慢,完全可以使用一个线程来处理整个系统的键盘输入。
整个系统只有一个键盘,而且键盘输入是人的操作,速度比较慢,完全可以使用一个线程来处理整个系统的键盘输入。
42.在进程转换时,下列()转换是不可能发生的。
D
阻塞的进程在获得所需资源时只能由阻塞态转变为就绪态,并插入就绪队列,而不能直接转变为运行态。
阻塞的进程在获得所需资源时只能由阻塞态转变为就绪态,并插入就绪队列,而不能直接转变为运行态。
43.当()时,进程从执行状态转变为就绪态。
B
当进程的时间片到时,进程由运行态转变为就绪态,等待下一个时间片的到来。
当进程的时间片到时,进程由运行态转变为就绪态,等待下一个时间片的到来。
44.两个合作进程(Cooperating Processes)无法利用()交换数据。
C
不同的进程拥有不同的代码段和数据段,全局变量是对同一进程而言的,在不同的进程中是不同的变量,没有任何联系,所以不能用于交换数据。此题也可用排除法做,选项A、B、D均是课本上所讲的。管道是一种文件。
不同的进程拥有不同的代码段和数据段,全局变量是对同一进程而言的,在不同的进程中是不同的变量,没有任何联系,所以不能用于交换数据。此题也可用排除法做,选项A、B、D均是课本上所讲的。管道是一种文件。
45.以下可能导致一个进程从运行态变为就绪态的事件是()。
D
进程处于运行态时,它必须已获得所需的资源,在运行结束后就撤销。只有在时间片到或出现了比现在进程优先级更高的进程时才转变成就绪态。选项A使进程从阻塞态到就绪态,选项B使进程从运行态到阻塞态,选项C使进程撤销。
进程处于运行态时,它必须已获得所需的资源,在运行结束后就撤销。只有在时间片到或出现了比现在进程优先级更高的进程时才转变成就绪态。选项A使进程从阻塞态到就绪态,选项B使进程从运行态到阻塞态,选项C使进程撤销。
46.()必会引起进程切换。
B
进程切换是指CPU调度不同的进程执行,当一个进程从运行态变为就绪态时,CPU调度另个进程执行,引起进程切换。
进程切换是指CPU调度不同的进程执行,当一个进程从运行态变为就绪态时,CPU调度另个进程执行,引起进程切换。
47.进程处于()时,它处于非阻塞态。
C
进程有三种基本状态,处于阻塞态的进程由于某个事件不满足而等待。这样的事件一般是I/O操作,如键盘等,或是因互斥或同步数据引起的等待,如等待信号或等待进入互斥临界区代码段等,等待网络数据进入内存是为了进程同步。而等待CPU调度的进程处于就绪态,只有它是非阻塞态。
进程有三种基本状态,处于阻塞态的进程由于某个事件不满足而等待。这样的事件一般是I/O操作,如键盘等,或是因互斥或同步数据引起的等待,如等待信号或等待进入互斥临界区代码段等,等待网络数据进入内存是为了进程同步。而等待CPU调度的进程处于就绪态,只有它是非阻塞态。
48.一个进程被唤醒,意味着()。
A
当一个进程被唤醒时,这个进程就进入了就绪态,等待进程调度而占有CPU运行。进程被唤醒在某种情形下优先级可以增大,但一般不会变为最大,而由固定的算法来计算。也不会在唤醒后位于就绪队列的队首,就绪队列是按照一定的规则赋予其位置的,如先来先服务,或者高优先级优先,或者短进程优先等,更不能直接占有处理器运行。
当一个进程被唤醒时,这个进程就进入了就绪态,等待进程调度而占有CPU运行。进程被唤醒在某种情形下优先级可以增大,但一般不会变为最大,而由固定的算法来计算。也不会在唤醒后位于就绪队列的队首,就绪队列是按照一定的规则赋予其位置的,如先来先服务,或者高优先级优先,或者短进程优先等,更不能直接占有处理器运行。
49.进程创建时,不需要做的是()。
D
进程创建原语完成的工作是:向系统申请一个空闲PCB,为被创建进程分配必要的资源,然后将其PCB初始化,并将此PCB插入就绪队列,最后返回一个进程标志号。当调度程序为进程分配CPU后,进程开始运行。所以进程创建的过程中不会包含分配CPU的过程,这不是进程创建者的工作,而是调度程序的工作。
进程创建原语完成的工作是:向系统申请一个空闲PCB,为被创建进程分配必要的资源,然后将其PCB初始化,并将此PCB插入就绪队列,最后返回一个进程标志号。当调度程序为进程分配CPU后,进程开始运行。所以进程创建的过程中不会包含分配CPU的过程,这不是进程创建者的工作,而是调度程序的工作。
50.计算机两个系统中两个协作进程之间不能用来进行进程间通信的是()。
A
进程之间的通信方式主要有管道、消息传递、共享内存、文件映射和套接字等。数据库不能直接作为进程之间的通信方式。
进程之间的通信方式主要有管道、消息传递、共享内存、文件映射和套接字等。数据库不能直接作为进程之间的通信方式。
51.下面关于用户级线程和内核级线程的描述中,错误的是()。
B
用户级线程的调度仍以进程为单位,各个进程轮流执行一个时间片,假设进程A包含1个用户级线程,而进程B包含100个用户级线程,此时进程A中单个线程的运行时间将是进程B中各个线程平均运行时间的100倍;内核级线程的调度是以线程为单位的,各个线程轮流执行一个时间片,同样假设进程A包含1个内核级线程,而进程B包含100个内核级线程,此时进程B的运行时间将是进程A的100倍,A正确。用户级线程的调度单位是进程,跨进程的线程调度需要内核支持,B错误。用户级线程是由用户程序或函数库实现的,不依赖于操作系统的支持,C正确。用户级线程对操作系统是透明的,CPU调度的对象仍然是进程,D正确。
用户级线程的调度仍以进程为单位,各个进程轮流执行一个时间片,假设进程A包含1个用户级线程,而进程B包含100个用户级线程,此时进程A中单个线程的运行时间将是进程B中各个线程平均运行时间的100倍;内核级线程的调度是以线程为单位的,各个线程轮流执行一个时间片,同样假设进程A包含1个内核级线程,而进程B包含100个内核级线程,此时进程B的运行时间将是进程A的100倍,A正确。用户级线程的调度单位是进程,跨进程的线程调度需要内核支持,B错误。用户级线程是由用户程序或函数库实现的,不依赖于操作系统的支持,C正确。用户级线程对操作系统是透明的,CPU调度的对象仍然是进程,D正确。
52.在内核级线程相对于用户级线程的优点的如下描述中,错误的是()
A
在内核级线程中,同一进程中的线程切换,需要从用户态转到核心态进行,系统开销较大, A错误。CPU调度是在内核中进行的,在内核级线程中,调度是在线程一级进行的,因此内核可以同时调度同一进程的多个线程在多CPU上并行运行(用户级线程则不行),B正确、D正确。内核级线程可以在内核态执行系统调用子程序,直接利用系统调用为它服务,因此C正确。注意,用户级线程是在用户空间中实现的,不能直接利用系统调用获得内核的服务,当用户级线程要获得内核服务时,必须借助于操作系统的帮助,因此用户级线程只能在用户态运行。
在内核级线程中,同一进程中的线程切换,需要从用户态转到核心态进行,系统开销较大, A错误。CPU调度是在内核中进行的,在内核级线程中,调度是在线程一级进行的,因此内核可以同时调度同一进程的多个线程在多CPU上并行运行(用户级线程则不行),B正确、D正确。内核级线程可以在内核态执行系统调用子程序,直接利用系统调用为它服务,因此C正确。注意,用户级线程是在用户空间中实现的,不能直接利用系统调用获得内核的服务,当用户级线程要获得内核服务时,必须借助于操作系统的帮助,因此用户级线程只能在用户态运行。
53.下列关于用户级线程相对于内核级线程的优点的描述中,错误的是()
A
进程中的某个用户级线程被阻塞,则整个进程也被阻塞,即进程中的其他用户级线程也被阻塞,选项A错误。用户级线程的调度是在用户空间进行的,节省了模式切换的开销,不同进程可以根据自身的需要,对自己的线程选择不同的调度算法,因此选项B、C和D都正确。
进程中的某个用户级线程被阻塞,则整个进程也被阻塞,即进程中的其他用户级线程也被阻塞,选项A错误。用户级线程的调度是在用户空间进行的,节省了模式切换的开销,不同进程可以根据自身的需要,对自己的线程选择不同的调度算法,因此选项B、C和D都正确。
54.用户级线程的优,点不包括()。
D
用户级线程是不需要内核支持而在用户程序中实现的线程,不能利用多处理器的并行性,因为操作系统只能看到进程。其余说法均正确。
用户级线程是不需要内核支持而在用户程序中实现的线程,不能利用多处理器的并行性,因为操作系统只能看到进程。其余说法均正确。
55.下列选项中,可能导致用户级线程切换的事件是()。
D
本题可用排除法。用户级线程的切换是由应用程序自己控制的,不需要操作系统的干预,操作系统感受不到用户级线程的存在。因此,系统调用、/O请求和异常处理这些涉及内核态的事件都不会导致用户级线程切换,但会导致内核级线程切换。线程同步是指多个线程之间协调执行顺序的机制,如互斥锁、信号量、条件变量等。当一个线程在等待同步条件时,应用程序可以选择切换到另一个就绪的用户级线程,以提高CPU的利用率。
本题可用排除法。用户级线程的切换是由应用程序自己控制的,不需要操作系统的干预,操作系统感受不到用户级线程的存在。因此,系统调用、/O请求和异常处理这些涉及内核态的事件都不会导致用户级线程切换,但会导致内核级线程切换。线程同步是指多个线程之间协调执行顺序的机制,如互斥锁、信号量、条件变量等。当一个线程在等待同步条件时,应用程序可以选择切换到另一个就绪的用户级线程,以提高CPU的利用率。
56.下列关于用户级线程的描述中,错误的是()。
B
用户级线程不依赖于操作系统内核,而是由用户程序自己实现的,A正确。用户级线程的创建和调度都是在用户态下实现的,不需要切换到内核态,B错误。操作系统只能看到一个单线程进程,而不知道进程内部有多个用户级线程,C正确。线程库中线程的切换只涉及用户栈和寄存器等上下文的保存和恢复,不涉及内核栈和页表等内核上下文的切换,D正确。
用户级线程不依赖于操作系统内核,而是由用户程序自己实现的,A正确。用户级线程的创建和调度都是在用户态下实现的,不需要切换到内核态,B错误。操作系统只能看到一个单线程进程,而不知道进程内部有多个用户级线程,C正确。线程库中线程的切换只涉及用户栈和寄存器等上下文的保存和恢复,不涉及内核栈和页表等内核上下文的切换,D正确。
57.并发性较好的多线程模型有()。
Ⅰ.一对一模型
Ⅱ.多对一模型
Ⅲ.多对多模型
C
一对一模型和多对多模型能充分利用内核级线程,发挥多处理机的优势,能同时调度同一个进程中的多个线程并发执行,具有较好的并发性。
一对一模型和多对多模型能充分利用内核级线程,发挥多处理机的优势,能同时调度同一个进程中的多个线程并发执行,具有较好的并发性。
58.下列关于多对一模型的叙述中,错误的是()。
C
多对一模型中的线程切换不会导致进程切换,而是在用户空间进行的。其余说法均正确。
多对一模型中的线程切换不会导致进程切换,而是在用户空间进行的。其余说法均正确。
59.【2010统考真题】下列选项中,导致创建新进程的操作是()。
Ⅰ.用户登录成功
Ⅱ.设备分配
Ⅲ.启动程序执行
C
创建进程的原因主要有:①用户登录;②高级调度:③系统处理用户程序的请求:④用户程序的应用请求。对于Ⅰ,用户登录成功后,系统要为此创建一个用户管理的进程,包括用户桌面、环境等,所有用户进程都会在该进程下创建和管理。对于Ⅱ,设备分配是通过在系统中设置相应的数据结构实现的,不需要创建进程,这是操作系统中I/O核心子系统的内容。对于Ⅲ,启动程序执行是引起创建进程的典型事件,启动程序执行属于③或④。
创建进程的原因主要有:①用户登录;②高级调度:③系统处理用户程序的请求:④用户程序的应用请求。对于Ⅰ,用户登录成功后,系统要为此创建一个用户管理的进程,包括用户桌面、环境等,所有用户进程都会在该进程下创建和管理。对于Ⅱ,设备分配是通过在系统中设置相应的数据结构实现的,不需要创建进程,这是操作系统中I/O核心子系统的内容。对于Ⅲ,启动程序执行是引起创建进程的典型事件,启动程序执行属于③或④。
60.【2011统考真题】在支持多线程的系统中,进程P创建的若干线程不能共享的是()。
D
进程是资源分配的基本单位,线程是CPU调度的基本单位。进程的代码段、进程打开的文件、进程的全局变量等都是进程的资源,唯有进程中某线程的栈指针(包含在线程TCB中)是属于线程的,属于进程的资源可以共享,属于线程的栈指针是独享的,对其他线程透明。
进程是资源分配的基本单位,线程是CPU调度的基本单位。进程的代码段、进程打开的文件、进程的全局变量等都是进程的资源,唯有进程中某线程的栈指针(包含在线程TCB中)是属于线程的,属于进程的资源可以共享,属于线程的栈指针是独享的,对其他线程透明。
61.【2012统考真题】下列关于进程和线程的叙述中,正确的是()。
A
在引入线程后,进程依然是资源分配的基本单位,线程是调度的基本单位,同一进程中的各个线程共享进程的地址空间。在用户级线程中,有关线程管理的所有工作都由应用程序完成,无须内核的干预,内核意识不到线程的存在。
在引入线程后,进程依然是资源分配的基本单位,线程是调度的基本单位,同一进程中的各个线程共享进程的地址空间。在用户级线程中,有关线程管理的所有工作都由应用程序完成,无须内核的干预,内核意识不到线程的存在。
62.【2014统考真题】一个进程的读磁盘操作完成后,操作系统针对该进程必做的是()。
A
进程申请读磁盘操作时,因为要等待/O操作完成,会把自身阻塞,此时进程变为阻塞态;I/O操作完成后,进程得到了想要的资源,会从阻塞态转换到就绪态(这是操作系统的行为)。而降低进程优先级、分配用户内存空间和增加进程的时间片大小都不一定会发生,选择选项A。
进程申请读磁盘操作时,因为要等待/O操作完成,会把自身阻塞,此时进程变为阻塞态;I/O操作完成后,进程得到了想要的资源,会从阻塞态转换到就绪态(这是操作系统的行为)。而降低进程优先级、分配用户内存空间和增加进程的时间片大小都不一定会发生,选择选项A。
63.【2014统考真题】下列关于管道(Pipe)通信的叙述中,正确的是()。
C
普通管道只允许单向通信,数据只能往一个方向流动,要实现双向数据传输,就需要定义两个方向相反的管道,A错误。管道是一种存储在内存中的、固定大小的缓冲区,管道的大小通常为内存的一页,其大小并不是受磁盘容量大小的限制,B错误。由于管道的读/写操作都可能遇到缓冲区满或空的情况,当管道满时,写操作会被阻塞,直到有数据读出:而当管道空时,读操作会被阻塞,直到有数据写入,因此C正确。一个管道可以有多个读进程或多个写进程对其进行操作,但是这会增加数据竞争和混乱的风险,为了避免这种情况,应使用互斥锁或信号量等同步机制来保证每次只有一个讲程对管道讲行读或写操作,D错误
普通管道只允许单向通信,数据只能往一个方向流动,要实现双向数据传输,就需要定义两个方向相反的管道,A错误。管道是一种存储在内存中的、固定大小的缓冲区,管道的大小通常为内存的一页,其大小并不是受磁盘容量大小的限制,B错误。由于管道的读/写操作都可能遇到缓冲区满或空的情况,当管道满时,写操作会被阻塞,直到有数据读出:而当管道空时,读操作会被阻塞,直到有数据写入,因此C正确。一个管道可以有多个读进程或多个写进程对其进行操作,但是这会增加数据竞争和混乱的风险,为了避免这种情况,应使用互斥锁或信号量等同步机制来保证每次只有一个讲程对管道讲行读或写操作,D错误
64.【2015统考真题】下列选项中,会导致进程从执行态变为就绪态的事件是()。
D
P(wait)操作表示进程请求某一资源,选项A、B和C都因为请求某一资源会进入阻塞态,而选项D只是被剥夺了CPU资源,进入就绪态,一旦得到CPU即可运行。
P(wait)操作表示进程请求某一资源,选项A、B和C都因为请求某一资源会进入阻塞态,而选项D只是被剥夺了CPU资源,进入就绪态,一旦得到CPU即可运行。
65.【2018统考真题】下列选项中,可能导致当前进程P阻塞的事件是()。
I.进程P申请临界资源
Ⅱ.进程P从磁盘读数据
Ⅲ.系统将CPU分配给高优先权的进程
C
进程等待某资源为可用(不包括CPU)或等待输入输出完成均会进入阻塞态,因此I、Ⅱ正确;Ⅲ中情况发生时,进程进入就绪态,因此Ⅲ错误。
进程等待某资源为可用(不包括CPU)或等待输入输出完成均会进入阻塞态,因此I、Ⅱ正确;Ⅲ中情况发生时,进程进入就绪态,因此Ⅲ错误。
66.【2019统考真题】下列选项中,可能将进程唤醒的事件是()。
I.I/O结束
Ⅱ.某进程退出临界区
Ⅲ.当前进程的时间片用完
C
当被阻塞进程等待的某资源(不包括CPU)可用时,进程将被唤醒。/O结束后,等待该/O结束而被阻塞的有关进程会被唤醒,I正确:某进程退出临界区后,之前因需要进入该临界区而被阻塞的有关进程会被唤醒,Ⅱ正确:当前进程的时间片用完后进入就绪队列等待重新调度,优先级最高的进程获得CPU资源从就绪态变成执行态,Ⅱ错误。
当被阻塞进程等待的某资源(不包括CPU)可用时,进程将被唤醒。/O结束后,等待该/O结束而被阻塞的有关进程会被唤醒,I正确:某进程退出临界区后,之前因需要进入该临界区而被阻塞的有关进程会被唤醒,Ⅱ正确:当前进程的时间片用完后进入就绪队列等待重新调度,优先级最高的进程获得CPU资源从就绪态变成执行态,Ⅱ错误。
67.【2019统考真题】下列关于线程的描述中,错误的是()。
B
应用程序没有进行内核级线程管理的代码,只有一个到内核级线程的编程接口,内核为进程及其内部的每个线程维护上下文信息,调度也是在内核中由操作系统完成的,A正确。用户级线程的控制块是由用户空间的库函数维护的,操作系统并不知道用户级线程的存在,用户级线程的控制块一般存放在用户空间的数据结构中,如链表或数组,由用户空间的线程库来管理。操作系统只负责为每个进程建立一个进程控制块,操作系统只能看到进程,而看不到用户级线程,所以不会为每个用户级线程建立一个线程控制块。但是,内核级线程的线程控制块是由操作系统创建的,当一个进程创建一个内核级线程时,操作系统会为该线程分配一个线程控制块,并将其加入内核的线程管理数据结构,B错误。用户级线程的切换可以在用户空间完成,内核级线程的切换需要操作系统帮助进行调度,因此用户级线程的切换效率更高,C正确。用户级线程的管理工作可以只在用户空间中进行,因此可以在不支持内核级线程的操作系统上实现,D正确。
应用程序没有进行内核级线程管理的代码,只有一个到内核级线程的编程接口,内核为进程及其内部的每个线程维护上下文信息,调度也是在内核中由操作系统完成的,A正确。用户级线程的控制块是由用户空间的库函数维护的,操作系统并不知道用户级线程的存在,用户级线程的控制块一般存放在用户空间的数据结构中,如链表或数组,由用户空间的线程库来管理。操作系统只负责为每个进程建立一个进程控制块,操作系统只能看到进程,而看不到用户级线程,所以不会为每个用户级线程建立一个线程控制块。但是,内核级线程的线程控制块是由操作系统创建的,当一个进程创建一个内核级线程时,操作系统会为该线程分配一个线程控制块,并将其加入内核的线程管理数据结构,B错误。用户级线程的切换可以在用户空间完成,内核级线程的切换需要操作系统帮助进行调度,因此用户级线程的切换效率更高,C正确。用户级线程的管理工作可以只在用户空间中进行,因此可以在不支持内核级线程的操作系统上实现,D正确。
68.【2020统考真题】下列关于父进程与子进程的叙述中,错误的是()。
B
父进程与子进程当然可以并发执行,A正确。父进程可与子进程共享一部分资源,但不能共享虚拟地址空间,在创建子进程时,会为子进程分配资源,如虚拟地址空间等,B错误。临界资源一次只能为一个进程所用,D正确。进程控制块(PCB)是进程存在的唯一标志,每个进程都有自己的PCB,C正确。
父进程与子进程当然可以并发执行,A正确。父进程可与子进程共享一部分资源,但不能共享虚拟地址空间,在创建子进程时,会为子进程分配资源,如虚拟地址空间等,B错误。临界资源一次只能为一个进程所用,D正确。进程控制块(PCB)是进程存在的唯一标志,每个进程都有自己的PCB,C正确。
69.【2021统考真题】下列操作中,操作系统在创建新进程时,必须完成的是()。
Ⅰ.申请空白的进程控制块
Ⅱ.初始化进程控制块
Ⅲ.设置进程状态为执行态
B
操作系统感知进程的唯一方式是通过进程控制块(PCB),所以创建一个新进程就是为其申请一个空白的进程控制块并且初始化一些必要的进程信息,如初始化进程标志信息、初始化CPU状态信息、设置进程优先级等。I、Ⅱ正确。创建一个进程时,一般会为其分配除CPU外的大多数资源,所以一般将其设置为就绪态,让它等待调度程序的调度。
操作系统感知进程的唯一方式是通过进程控制块(PCB),所以创建一个新进程就是为其申请一个空白的进程控制块并且初始化一些必要的进程信息,如初始化进程标志信息、初始化CPU状态信息、设置进程优先级等。I、Ⅱ正确。创建一个进程时,一般会为其分配除CPU外的大多数资源,所以一般将其设置为就绪态,让它等待调度程序的调度。
70.【2022统考真题】下列事件或操作中,可能导致进程P由执行态变为阻塞态的是()。
Ⅰ.进程P读文件
Ⅱ.进程P的时间片用完
Ⅲ.进程P申请外设
Ⅳ.进程P执行信号量的wait()操作
D
进程P读文件时,进程从执行态进入阻塞态,等待磁盘I/O完成,I正确。进程P的时间片用完,导致进程从执行态进入就绪态,转入就绪队列等待下次被调度,Ⅱ错误。进程P申请外设,若外设是独占设备且正在被其他进程使用,则进程P从执行态进入阻塞态,等待系统分配外设, Ⅲ正确。进程P执行信号量的wait()操作,如果信号量的值小于或等于0,则进程进入阻塞态,等待其他进程用signal()操作唤醒,Ⅳ正确。
进程P读文件时,进程从执行态进入阻塞态,等待磁盘I/O完成,I正确。进程P的时间片用完,导致进程从执行态进入就绪态,转入就绪队列等待下次被调度,Ⅱ错误。进程P申请外设,若外设是独占设备且正在被其他进程使用,则进程P从执行态进入阻塞态,等待系统分配外设, Ⅲ正确。进程P执行信号量的wait()操作,如果信号量的值小于或等于0,则进程进入阻塞态,等待其他进程用signal()操作唤醒,Ⅳ正确。
71.【2023统考真题】下列操作完成时,导致CPU从内核态转为用户态的是()。
D
操作系统通过执行软中断指令陷入内核态执行系统调用,系统调用执行完成后,恢复被中断的进程或设置新进程的CPU现场,然后返回被中断进程或新进程。只有系统调用是用户进程调用内核功能,CPU从用户态切换到内核态,执行完后再返回到用户态。A、B、C项的操作都是在内核态进行的,执行前后都可能处在内核态,只有中断返回时才切换为用户态。
操作系统通过执行软中断指令陷入内核态执行系统调用,系统调用执行完成后,恢复被中断的进程或设置新进程的CPU现场,然后返回被中断进程或新进程。只有系统调用是用户进程调用内核功能,CPU从用户态切换到内核态,执行完后再返回到用户态。A、B、C项的操作都是在内核态进行的,执行前后都可能处在内核态,只有中断返回时才切换为用户态。
72.【2023统考真题】下列由当前线程引起的事件或执行的操作中,可能导致该线程由执行态变为就绪态的是()。
C
在等待键盘输入的操作中,当前线程处于阻塞态,键盘输入完成后,再调出相应的中断服务程序进行处理,由中断服务程序负责唤醒当前线程,A错误。当线程检测到缺页异常时,会调用缺页异常处理程序从外存调入缺失的页面,线程状态从执行态转为阻塞态,B错误。当线程的时间片用完后,主动放弃CPU,此时若线程还未执行完,就进入就绪队列等待下次调度,此时线程状态从执行态转为就绪态,C正确。线程执行wait()后,若成功获取资源,则线程状态不变,若未能获取资源,则线程进入阻塞态,D错误。
在等待键盘输入的操作中,当前线程处于阻塞态,键盘输入完成后,再调出相应的中断服务程序进行处理,由中断服务程序负责唤醒当前线程,A错误。当线程检测到缺页异常时,会调用缺页异常处理程序从外存调入缺失的页面,线程状态从执行态转为阻塞态,B错误。当线程的时间片用完后,主动放弃CPU,此时若线程还未执行完,就进入就绪队列等待下次调度,此时线程状态从执行态转为就绪态,C正确。线程执行wait()后,若成功获取资源,则线程状态不变,若未能获取资源,则线程进入阻塞态,D错误。
二、综合应用题
01.为何进程之间的通信必须借助于操作系统内核功能?简单说明进程通信的几种主要方式。
在操作系统中,进程是竞争和分配计算机系统资源的基本单位。每个进程都有自己的独立地址空间。为了保证多个进程能够彼此互不干扰地共享物理内存,操作系统利用硬件地址机制对进程的地址空间进行了严格的保护,限制每个进程只能访问自己的地址空间。
具体解答如下。
每个进程有自己独立的地址空间。在操作系统和硬件的地址保护机制下,进程无法访问其他进程的地址空间,必须借助于系统调用函数实现进程之间的通信。进程通信的主要方式有:
1)共享内存区。通过系统调用创建共享内存区。多个进程可以(通过系统调用)连接同一个共享内存区,通过访问共享内存区实现进程之间的数据交换。使用共享内存区时需要利用信号量解决同步互斥问题。
2)消息传递。通过发送/接收消息,系统调用实现进程之间的通信。当进程发送消息时,系统将消息从用户缓冲区复制到内核中的消息缓冲区,然后将消息缓冲区挂入消息队列。进程发送的消息保持在消息队列中,直到被另一进程接收。当进程接收消息时,系统从消息队列中解挂消息缓冲区,将消息从内核的消息缓冲区中复制到用户缓冲区,然后释放消息缓冲区。
3)管道系统。管道允许两个进程按标准的生产者-消费者方式进行通信:生产者向管道的一端(写入端)写,消费者从管道的另一端(读出端)读。管道只允许单向通信。在读/写过程中,操作系统保证数据的写入顺序和读出顺序是一致的。
4)共享文件。利用操作系统提供的文件共享功能实现进程之间的通信。这时,也需要信号量来解决文件共享操作中的同步和互斥问题。
具体解答如下。
每个进程有自己独立的地址空间。在操作系统和硬件的地址保护机制下,进程无法访问其他进程的地址空间,必须借助于系统调用函数实现进程之间的通信。进程通信的主要方式有:
1)共享内存区。通过系统调用创建共享内存区。多个进程可以(通过系统调用)连接同一个共享内存区,通过访问共享内存区实现进程之间的数据交换。使用共享内存区时需要利用信号量解决同步互斥问题。
2)消息传递。通过发送/接收消息,系统调用实现进程之间的通信。当进程发送消息时,系统将消息从用户缓冲区复制到内核中的消息缓冲区,然后将消息缓冲区挂入消息队列。进程发送的消息保持在消息队列中,直到被另一进程接收。当进程接收消息时,系统从消息队列中解挂消息缓冲区,将消息从内核的消息缓冲区中复制到用户缓冲区,然后释放消息缓冲区。
3)管道系统。管道允许两个进程按标准的生产者-消费者方式进行通信:生产者向管道的一端(写入端)写,消费者从管道的另一端(读出端)读。管道只允许单向通信。在读/写过程中,操作系统保证数据的写入顺序和读出顺序是一致的。
4)共享文件。利用操作系统提供的文件共享功能实现进程之间的通信。这时,也需要信号量来解决文件共享操作中的同步和互斥问题。
02.什么是多线程?多线程与多任务有什么区别?
多线程是指在一个程序中可以定义多个线程并同时运行它们,每个线程可以执行不同的任务。
多线程与多任务的区别:多任务是针对操作系统而言的,代表操作系统可以同时执行的程序个数:多线程是针对一个程序而言的,代表一个程序可以同时执行的线程个数,而每个线程可以完成不同的任务。
多线程与多任务的区别:多任务是针对操作系统而言的,代表操作系统可以同时执行的程序个数:多线程是针对一个程序而言的,代表一个程序可以同时执行的线程个数,而每个线程可以完成不同的任务。
03.回答下列问题:
1)若系统中没有运行进程,是否一定没有就绪进程?为什么?
2)若系统中既没有运行进程,又没有就绪进程,系统中是否就没有进程?为什么?
3)在采用优先级进程调度时,运行进程是否一定是系统中优先级最高的进程?
1)是。若系统中未运行进程,则系统很快会选择一个就绪进程运行。只有就绪队列中无进程时,CPU才可能处于空闲状态。
2)不一定。因为系统中的所有进程可能都处于等待态,可能处于死锁状态,也有可能因为等待的事件未发生而进入循环等待态。
3)不一定。因为高优先级的进程有可能正处在等待队列中,进程调度会从就绪队列中选择一个进程占用CPU,这个被选中的进程可能优先级较低。
2)不一定。因为系统中的所有进程可能都处于等待态,可能处于死锁状态,也有可能因为等待的事件未发生而进入循环等待态。
3)不一定。因为高优先级的进程有可能正处在等待队列中,进程调度会从就绪队列中选择一个进程占用CPU,这个被选中的进程可能优先级较低。
04.某分时系统中的进程可能出现如下图所示的状态变化,请回答下列问题:
1)根据图示,该系统应采用什么进程调度策略?
2)将图中每个状态变化的可能原因填写在下表中。
根据题意,首先由图进行分析,进程由运行态可以直接回到就绪队列的末尾,而且就绪队列中是先来先服务。那么,什么情况才能发生这样的变化呢?只有采用单一时间片轮转的调度系统,分配的时间片用完后,才会发生上述情况。因此,该系统一定采用时间片轮转调度算法,采用时间片轮转算法的操作系统一般均为交互式操作系统。由图可知,进程被阻塞时,可以进入不同的阻塞队列,等待打印机输出结果和等待磁盘读取文件。所以,它是一个多阻塞队列的时间片轮转法的调度系统。
具体解答如下。
1)根据题意,该系统采用的是时间片轮转法调度进程策略。
2)可能的变化见下表。
具体解答如下。
1)根据题意,该系统采用的是时间片轮转法调度进程策略。
2)可能的变化见下表。
2.2.7 本节习题精选
一、单项选择题
01.中级调度的目的是()。
D
中级调度的主要目的是节省内存,将内存中处于阻塞态或长期不运行的进程挂起到外存,从而腾出空间给其他进程使用。当这些进程重新具备运行条件时,再从外存调入内存,恢复运行。
中级调度的主要目的是节省内存,将内存中处于阻塞态或长期不运行的进程挂起到外存,从而腾出空间给其他进程使用。当这些进程重新具备运行条件时,再从外存调入内存,恢复运行。
02.进程从创建态转换到就绪态的工作由()完成。
C
进程从创建态转换到就绪态是由高级调度完成的。高级调度(作业调度)的主要任务是从后备队列中选择一个或一批作业,为其创建P℃B,分配内存等其他资源,并将其插入就绪队列。
进程从创建态转换到就绪态是由高级调度完成的。高级调度(作业调度)的主要任务是从后备队列中选择一个或一批作业,为其创建P℃B,分配内存等其他资源,并将其插入就绪队列。
03.下列哪些指标是调度算法设计时应该考虑的?()
Ⅰ.公平性
Ⅱ.资源利用率
Ⅲ.互斥性
Ⅳ.平均周转时间
B
设计调度算法时应考虑的指标有很多,比较常见的有公平性、资源利用率、平均周转时间、平均等待时间、平均响应时间。互斥性不是调度算法设计时需要考虑的指标,而是一种同步机制,用来保证多个进程访问临界资源时不会发生冲突。
设计调度算法时应考虑的指标有很多,比较常见的有公平性、资源利用率、平均周转时间、平均等待时间、平均响应时间。互斥性不是调度算法设计时需要考虑的指标,而是一种同步机制,用来保证多个进程访问临界资源时不会发生冲突。
[!NOTE] 第3题答案原C,但解析来看是B,但阿鑫认为是B(可能打印错误)。具体正确答案自行分析。
04.时间片轮转调度算法是为了()。
A
时间片轮转的主要目的是,使得多个交互的用户能够得到及时响应,使得用户以为“独占”计算机的使用,因此它并没有偏好,也不会对特殊进程做特殊服务。时间片轮转增加了系统开销,所以不会使得系统高效运转,吞吐量和周转时间均不如批处理。但其较快速的响应时间使得用户能够与计算机进行交互,改善了人机环境,满足用户需求。
时间片轮转的主要目的是,使得多个交互的用户能够得到及时响应,使得用户以为“独占”计算机的使用,因此它并没有偏好,也不会对特殊进程做特殊服务。时间片轮转增加了系统开销,所以不会使得系统高效运转,吞吐量和周转时间均不如批处理。但其较快速的响应时间使得用户能够与计算机进行交互,改善了人机环境,满足用户需求。
05.在单处理器系统中,进程什么时候占用处理器及占用时间的长短是由()决定的。
C
进程调度的时机与进程特点有关,如进程是CPU繁忙型还是I/O繁忙型、自身的优先级等。但仅有这些特点是不够的,能否得到调度还取决于进程调度策略,若采用优先级调度算法,则进程的优先级才起作用。至于占用处理器运行时间的长短,则要看进程自身,若进程是I/O繁忙型,运行过程中要频繁访问I/O端口,即可能会频繁放弃CPU,所以占用CPU的时间不会长,一旦放弃CPU,则必须等待下次调度。若进程是CPU繁忙型,则一旦占有CPU,就可能会运行很长时间,但运行时间还取决于进程调度策略,大部分情况下,交互式系统为改善用户的响应时间,大多数采用时间片轮转的算法,这种算法在进程占用CPU达到一定时间后,会强制将其换下,以保证其他进程的CPU使用权。因此选择选项C。
进程调度的时机与进程特点有关,如进程是CPU繁忙型还是I/O繁忙型、自身的优先级等。但仅有这些特点是不够的,能否得到调度还取决于进程调度策略,若采用优先级调度算法,则进程的优先级才起作用。至于占用处理器运行时间的长短,则要看进程自身,若进程是I/O繁忙型,运行过程中要频繁访问I/O端口,即可能会频繁放弃CPU,所以占用CPU的时间不会长,一旦放弃CPU,则必须等待下次调度。若进程是CPU繁忙型,则一旦占有CPU,就可能会运行很长时间,但运行时间还取决于进程调度策略,大部分情况下,交互式系统为改善用户的响应时间,大多数采用时间片轮转的算法,这种算法在进程占用CPU达到一定时间后,会强制将其换下,以保证其他进程的CPU使用权。因此选择选项C。
07.下列内容中,不属于进程上下文的是()。
C
当一个进程被执行时,CPU的所有寄存器中的值(进程的现场信息)、进程的状态和控制信息以及堆栈中的内容被称为该进程的上下文。中断向量不属于进程上下文的一部分,而是一组指向中断处理程序的指针,存放在内存的固定位置。
当一个进程被执行时,CPU的所有寄存器中的值(进程的现场信息)、进程的状态和控制信息以及堆栈中的内容被称为该进程的上下文。中断向量不属于进程上下文的一部分,而是一组指向中断处理程序的指针,存放在内存的固定位置。
08.下列关于进程上下文切换的叙述中,错误的是()。
D
上下文切换发生在操作系统调度一个新进程到处理器上运行的时候。一个重要的上下文信息就是程序计数器(PC)的值,当前进程被打断的PC值作为寄存器上下文的一部分保存在进程现场信息中。进程上下文切换过程中不涉及主存和磁盘的数据交换,D错误。
上下文切换发生在操作系统调度一个新进程到处理器上运行的时候。一个重要的上下文信息就是程序计数器(PC)的值,当前进程被打断的PC值作为寄存器上下文的一部分保存在进程现场信息中。进程上下文切换过程中不涉及主存和磁盘的数据交换,D错误。
09.()有利于CPU繁忙型的作业,而不利于I/O繁忙型的作业。
B
FCFS调度算法比较有利于长作业,而不利于短作业。CPU繁忙型作业是指该类作业需要占用很长的CPU时间,而很少请求I/O操作,因此CPU繁忙型作业类似于长作业,采用FCFS可从容完成计算。I/O繁忙型作业是指作业执行时需频繁请求I/O操作,即可能频繁放弃CPU,所以占用CPU的时间不会太长,一旦放弃CPU,则必须重新排队等待调度,故采用SJF比较适合。时间片轮转法对于短作业和长作业的时间片都一样,所以地位也几乎一样。优先级调度有利于优先级高的进程,而优先级和作业时间长度是没有必然联系的。因此选B。
FCFS调度算法比较有利于长作业,而不利于短作业。CPU繁忙型作业是指该类作业需要占用很长的CPU时间,而很少请求I/O操作,因此CPU繁忙型作业类似于长作业,采用FCFS可从容完成计算。I/O繁忙型作业是指作业执行时需频繁请求I/O操作,即可能频繁放弃CPU,所以占用CPU的时间不会太长,一旦放弃CPU,则必须重新排队等待调度,故采用SJF比较适合。时间片轮转法对于短作业和长作业的时间片都一样,所以地位也几乎一样。优先级调度有利于优先级高的进程,而优先级和作业时间长度是没有必然联系的。因此选B。
10.下面有关选择进程调度算法的准则中,不正确的是()。
D
在选择进程调度算法时应考虑以下几个准则:①公平:确保每个进程获得合理的CPU份额;②有效:使CPU尽可能地忙碌;③响应时间:使交互用户的响应时间尽可能短;④周转时间:使批处理用户等待输出的时间尽可能短;⑤吞吐量:使单位时间处理的进程数尽可能最多。由此可见选项D不正确。
在选择进程调度算法时应考虑以下几个准则:①公平:确保每个进程获得合理的CPU份额;②有效:使CPU尽可能地忙碌;③响应时间:使交互用户的响应时间尽可能短;④周转时间:使批处理用户等待输出的时间尽可能短;⑤吞吐量:使单位时间处理的进程数尽可能最多。由此可见选项D不正确。
11.实时系统的进程调度,通常采用()算法。
C
实时系统必须能足够及时地处理某些紧急的外部事件,因此普遍用高优先级,并用“可抢占”来确保实时处理。
实时系统必须能足够及时地处理某些紧急的外部事件,因此普遍用高优先级,并用“可抢占”来确保实时处理。
12.支持多道程序设计的操作系统在运行过程中,不断地选择新进程运行来实现CPU的共享,但其中()不是引起操作系统选择新进程的直接原因。
D
操作系统选择新进程的直接原因是当前运行的进程不能继续运行。当运行的进程由于时间片用完、运行结束、出错、需要等待事件的发生、自我阻塞等,均可以激活调度程序进行重新调度,选择就绪队列的队首进程投入运行。新进程加入就绪队列不是引起调度的直接原因,当CPU正在运行其他进程时,该进程仍需等待。即使是在采用高优先级调度算法的系统中,一个最高优先级的进程进入就绪队列,也需要考虑是否允许抢占,当不允许抢占时,仍需等待。
操作系统选择新进程的直接原因是当前运行的进程不能继续运行。当运行的进程由于时间片用完、运行结束、出错、需要等待事件的发生、自我阻塞等,均可以激活调度程序进行重新调度,选择就绪队列的队首进程投入运行。新进程加入就绪队列不是引起调度的直接原因,当CPU正在运行其他进程时,该进程仍需等待。即使是在采用高优先级调度算法的系统中,一个最高优先级的进程进入就绪队列,也需要考虑是否允许抢占,当不允许抢占时,仍需等待。
13.进程(线程)调度的时机有()。
Ⅰ.运行的进程(线程)运行完毕
Ⅱ.运行的进程(线程)所需资源未准备好
Ⅲ.运行的进程(线程)的时间片用完
Ⅳ.运行的进程(线程)自我阻塞
Ⅴ.运行的进程(线程)出现错误
D
进程(线程)调度的时机包括:运行的进程(线程)运行完毕、运行的进程(线程)自我阻塞、运行的进程(线程)的时间片用完、运行的进程(线程)所需的资源没有准备好(会阻塞进程)、运行的进程(线程)出现错误(会终止进程)。故I、Ⅱ、Ⅲ、Ⅳ和V都正确。
进程(线程)调度的时机包括:运行的进程(线程)运行完毕、运行的进程(线程)自我阻塞、运行的进程(线程)的时间片用完、运行的进程(线程)所需的资源没有准备好(会阻塞进程)、运行的进程(线程)出现错误(会终止进程)。故I、Ⅱ、Ⅲ、Ⅳ和V都正确。
14.设有4个作业同时到达,每个作业的执行时间均为2h,它们在一台处理器上按单道式运行,则平均周转时间为()。
B
4个作业的周转时间分别是2h,4h,6h,8h,所以4个作业的总周转时间为2+4+6+8=20h。此时,平均周转时间=各个作业周转时间之和/作业数=20/4=5小时。
4个作业的周转时间分别是2h,4h,6h,8h,所以4个作业的总周转时间为2+4+6+8=20h。此时,平均周转时间=各个作业周转时间之和/作业数=20/4=5小时。
15.若每个作业只能建立一个进程,为了照顾短作业用户,应采用()为了照顾紧急作业用户,应采用();为了能实现人机交互,应采用();而能使短作业、长作业和交互作业用户都满意,应采用()。
A.FCFS调度算法
B.短作业优先调度算法
C.时间片轮转调度算法
D.多级反馈队列调度算法
E.剥夺式优先级调度算法
B、E、C、D
照顾短作业用户,选择短作业优先调度算法:照顾紧急作业用户,即选择优先级高的作业优先调度,采用基于优先级的剥夺调度算法:实现人机交互,要保证每个作业都能在一定时间内轮到,采用时间片轮转法:使各种作业用户满意,要处理多级反馈,所以选择多级反馈队列调度算法。
照顾短作业用户,选择短作业优先调度算法:照顾紧急作业用户,即选择优先级高的作业优先调度,采用基于优先级的剥夺调度算法:实现人机交互,要保证每个作业都能在一定时间内轮到,采用时间片轮转法:使各种作业用户满意,要处理多级反馈,所以选择多级反馈队列调度算法。
16.()优先级是在创建进程时确定的,确定之后在整个运行期间不再改变。
D
优先级调度算法分静态和动态两种。静态优先级在进程创建时确定,之后不再改变。
优先级调度算法分静态和动态两种。静态优先级在进程创建时确定,之后不再改变。
17.现在有三个同时到达的作业J1,J2和J3,它们的执行时间分别是T1,T2,T3,且T1 < T2 < T3。系统按单道方式运行且采用短作业优先调度算法,则平均周转时间是()。
B
系统采用短作业优先调度算法,作业的执行顺序为J1,J2,J3,J1的周转时间为T1,J2的周转时间为T1+T2,J3的周转时间为T1+T2+T3,则平均周转时间为(T1+T1+T2+T1+T2+T3)/3=(3T1+2T2+T3)3。
系统采用短作业优先调度算法,作业的执行顺序为J1,J2,J3,J1的周转时间为T1,J2的周转时间为T1+T2,J3的周转时间为T1+T2+T3,则平均周转时间为(T1+T1+T2+T1+T2+T3)/3=(3T1+2T2+T3)3。
19.采用时间片轮转调度算法分配CPU时,当处于运行态的进程用完一个时间片后,它的状态是()状态。
C
处于运行态的进程用完一个时间片后,其状态会变为就绪态,等待下一次处理器调度。进程执行完最后的语句并使用系统调用xt请求操作系统删除它或出现一些异常情况时,进程才会终止。
处于运行态的进程用完一个时间片后,其状态会变为就绪态,等待下一次处理器调度。进程执行完最后的语句并使用系统调用xt请求操作系统删除它或出现一些异常情况时,进程才会终止。
20.一个作业8:00到达系统,估计运行时间为1h。若10:00开始执行该作业,其响应比是()。
C
21.关于优先权大小的论述中,正确的是()。
D
优先级算法中,I/O繁忙型作业要优于计算繁忙型作业,系统进程的优先权应高于用户进程的优先权。作业的优先权与长作业、短作业或系统资源要求的多少没有必然的关系。在动态优先权中,随着进程执行时间的增加其优先权随之降低,随着作业等待时间的增加其优先权相应上升。
优先级算法中,I/O繁忙型作业要优于计算繁忙型作业,系统进程的优先权应高于用户进程的优先权。作业的优先权与长作业、短作业或系统资源要求的多少没有必然的关系。在动态优先权中,随着进程执行时间的增加其优先权随之降低,随着作业等待时间的增加其优先权相应上升。
22.下列调度算法中,()调度算法是绝对可抢占的。
B
时间片轮转算法是按固定的时间配额来运行的,时间一到,不管是否完成,当前的进程必须撤下,调度新的进程,因此它是由时间配额决定的、是绝对可抢占的。而优先级算法和短进程优先算法都可分为抢占式和不可抢占式。
时间片轮转算法是按固定的时间配额来运行的,时间一到,不管是否完成,当前的进程必须撤下,调度新的进程,因此它是由时间配额决定的、是绝对可抢占的。而优先级算法和短进程优先算法都可分为抢占式和不可抢占式。
23.作业是用户提交的,进程是由系统自动生成的,除此之外,两者的区别是()。
B
作业是从用户角度出发的,它由用户提交,以用户任务为单位:进程是从操作系统出发的,由系统生成,是操作系统的资源分配和独立运行的基本单位。
作业是从用户角度出发的,它由用户提交,以用户任务为单位:进程是从操作系统出发的,由系统生成,是操作系统的资源分配和独立运行的基本单位。
24.进程调度算法采用固定时间片轮转调度算法,当时间片过大时,就会使时间片轮转法算法转化为()调度算法。
B
24.D时间片轮转调度算法在实际运行中也按先后顺序使用时间片,时间片过大时,我们可以认为其大于进程需要的运行时间,即转变为先来先服务调度算法。
24.D时间片轮转调度算法在实际运行中也按先后顺序使用时间片,时间片过大时,我们可以认为其大于进程需要的运行时间,即转变为先来先服务调度算法。
25.
D
26.有5个批处理作业A,B,C,D,E几乎同时到达,其预计运行时间分别为10,6,2,4,8,其优先级(由外部设定)分别为3,5,2,1,4,这里5为最高优先级。以下各种调度算法中,平均周转时间为14的是()调度算法。
D
当这五个批处理作业采用短作业优先调度算法时,平均周转时间=[2+(2+4)+(2+4+6)+(2+4+6+8)+(2+4+6+8+10)]/5=14。
这道题主要考查读者对各种优先调度算法的认识。若按照17题中的方法求解,则可能要花费一定的时间,但这是值得的,因为可以起到熟练基本方法的效果。在考试中很少会遇到操作量和计算量如此大的题目,所以读者不用担心。
当这五个批处理作业采用短作业优先调度算法时,平均周转时间=[2+(2+4)+(2+4+6)+(2+4+6+8)+(2+4+6+8+10)]/5=14。
这道题主要考查读者对各种优先调度算法的认识。若按照17题中的方法求解,则可能要花费一定的时间,但这是值得的,因为可以起到熟练基本方法的效果。在考试中很少会遇到操作量和计算量如此大的题目,所以读者不用担心。
27.
C
28.分时操作系统通常采用()调度算法来为用户服务。
A
分时系统需要同时满足多个用户的需要,因此把处理器时间轮流分配给多个用户作业使用,即采用时间片轮转调度算法。
分时系统需要同时满足多个用户的需要,因此把处理器时间轮流分配给多个用户作业使用,即采用时间片轮转调度算法。
29.在进程调度算法中,对短进程不利的是()。
B
先来先服务调度算法中,若一个长进程(作业)先到达系统,则会使后面的许多短进程(作业)等待很长的时间,因此对短进程(作业)不利。
先来先服务调度算法中,若一个长进程(作业)先到达系统,则会使后面的许多短进程(作业)等待很长的时间,因此对短进程(作业)不利。
30.假设系统中所有进程同时到达,则使进程平均周转时间最短的是()调度算法。
B
短进程优先调度算法具有最短的平均周转时间。平均周转时间=各进程周转时间之和/进程数。因为每个进程的执行时间都是固定的,所以变化的是等待时间,只有短进程优先算法能最小化等待时间。
短进程优先调度算法具有最短的平均周转时间。平均周转时间=各进程周转时间之和/进程数。因为每个进程的执行时间都是固定的,所以变化的是等待时间,只有短进程优先算法能最小化等待时间。
31.多级反馈队列调度算法不具备的特性是()。
C
系统开销小不是多级反馈队列调度算法的特性,而正好相反,该算法需要设置多个就绪队列,并且要在不同的队列之间进行进程的转移和抢占,因此增加了系统开销。
系统开销小不是多级反馈队列调度算法的特性,而正好相反,该算法需要设置多个就绪队列,并且要在不同的队列之间进行进程的转移和抢占,因此增加了系统开销。
32.下列调度算法中,系统开销最小的调度算法是()。
C
高响应比优先算法需要根据进程的等待时间和服务时间来计算响应比;多级反馈队列算法涉及多个队列的管理,以及进程在队列之间的转移,它们的系统开销都较大。时间片轮转算法虽然简单,但它需要为每个进程分配一个固定的时间片,并且在时间片用完时进行上下文切换,因此它的系统开销也不小。先来先服务算法是一种最简单的调度算法,它只需按照进程到达的先后顺序进行调度,无须进行任何优先级或时间片的判断和分配,因此系统开销最小。
高响应比优先算法需要根据进程的等待时间和服务时间来计算响应比;多级反馈队列算法涉及多个队列的管理,以及进程在队列之间的转移,它们的系统开销都较大。时间片轮转算法虽然简单,但它需要为每个进程分配一个固定的时间片,并且在时间片用完时进行上下文切换,因此它的系统开销也不小。先来先服务算法是一种最简单的调度算法,它只需按照进程到达的先后顺序进行调度,无须进行任何优先级或时间片的判断和分配,因此系统开销最小。
33.下列进程调度算法中,可能导致饥饿现象的有()。
Ⅰ.先来先服务调度算法
Ⅱ.短作业优先调度算法
Ⅲ.优先级调度算法
Ⅳ.时间片轮转调度算法
B
先来先服务算法和时间片轮转算法都不会出现饥饿现象,因为它们都是按照进程到达的顺序或固定的时间片来调度的,不会因为进程的特征而忽略某些进程。短作业优先算法(也可视为一种特殊的优先级算法)和优先级算法都可能出现饥饿现象,因为它们都是根据进程的服务时间或优先级来调度的,这样就可能导致一些长作业或低优先级的进程长期得不到调度。
先来先服务算法和时间片轮转算法都不会出现饥饿现象,因为它们都是按照进程到达的顺序或固定的时间片来调度的,不会因为进程的特征而忽略某些进程。短作业优先算法(也可视为一种特殊的优先级算法)和优先级算法都可能出现饥饿现象,因为它们都是根据进程的服务时间或优先级来调度的,这样就可能导致一些长作业或低优先级的进程长期得不到调度。
34.【2009统考真题】下列进程调度算法中,综合考虑进程等待时间和执行时间的是()。
D
响应比 =(等待时间+执行时间)/执行时间。它综合考虑了每个进程的等待时间和执行时间,对于同时到达的长进程和短进程,短进程会优先执行,以提高系统吞吐量;而长进程的响应比可以随等待时间的增加而提高,不会产生进程无法调度的情况。
响应比 =(等待时间+执行时间)/执行时间。它综合考虑了每个进程的等待时间和执行时间,对于同时到达的长进程和短进程,短进程会优先执行,以提高系统吞吐量;而长进程的响应比可以随等待时间的增加而提高,不会产生进程无法调度的情况。
35.【2010统考真题】下列选项中,降低进程优先级的合理时机是()。
A
A项中进程时间片用完,可降低其优先级以让其他进程被调度进入执行状态。B项中进程刚完成I/O,进入就绪队列等待被CPU调度,为了让其尽快处理I/O结果,因此应提高优先级。C项中进程长期处于就绪队列,为不至于产生饥饿现象,也应适当提高优先级。D项中进程的优先级不应该在此时降低,而应在时间片用完后再降低。
A项中进程时间片用完,可降低其优先级以让其他进程被调度进入执行状态。B项中进程刚完成I/O,进入就绪队列等待被CPU调度,为了让其尽快处理I/O结果,因此应提高优先级。C项中进程长期处于就绪队列,为不至于产生饥饿现象,也应适当提高优先级。D项中进程的优先级不应该在此时降低,而应在时间片用完后再降低。
36.【2011统考真题】下列选项中,满足短作业优先且不会发生饥饿现象的是()调度算法。
B
响应比=(等待时间+执行时间)/执行时间。高响应比优先算法在等待时间相同的情况下,作业执行时间越短,响应比越高,满足短任务优先。随着长作业等待时间的增加,响应比会变大,执行机会也会增大,因此不会发生饥饿现象。先来先服务和时间片轮转不符合短任务优先,非抢占式短任务优先会产生饥饿现象。
响应比=(等待时间+执行时间)/执行时间。高响应比优先算法在等待时间相同的情况下,作业执行时间越短,响应比越高,满足短任务优先。随着长作业等待时间的增加,响应比会变大,执行机会也会增大,因此不会发生饥饿现象。先来先服务和时间片轮转不符合短任务优先,非抢占式短任务优先会产生饥饿现象。
37.【2012统考真题】一个多道批处理系统中仅有P1和P2两个作业,P2比P1晚5s到达,它的计算和I/O操作顺序如下:
P1:计算60ms,I/O 80ms,计算20ms
P2:计算120ms,I/O 40ms,计算40ms
若不考虑调度和切换时间,则完成两个作业需要的时间最少是()。
B
38.【2012统考真题】若某单处理器多进程系统中有多个就绪态进程,则下列关于处理机调度的叙述中,错误的是()。
C
选项A、B、D显然属于可以进行CPU调度的情况。对于C,处于临界区的进程也可能因中断或抢占而导致调度,此外,若进程在临界区内请求的是一个需要等待的资源,比如打印机,则它主动放弃CPU,让其他进程运行。
选项A、B、D显然属于可以进行CPU调度的情况。对于C,处于临界区的进程也可能因中断或抢占而导致调度,此外,若进程在临界区内请求的是一个需要等待的资源,比如打印机,则它主动放弃CPU,让其他进程运行。
39.
B
为了合理地设置进程优先级,应综合考虑进程的CPU时间和I/O时间。对于优先级调度算法,一般来说,I/O型作业的优先权高于计算型作业的优先权,这是由于/O操作需要及时完成,它没有办法长时间地保存所要输入/输出的数据,所以考虑到系统资源利用率,要选择/O繁忙型作业有更高的优先级。
为了合理地设置进程优先级,应综合考虑进程的CPU时间和I/O时间。对于优先级调度算法,一般来说,I/O型作业的优先权高于计算型作业的优先权,这是由于/O操作需要及时完成,它没有办法长时间地保存所要输入/输出的数据,所以考虑到系统资源利用率,要选择/O繁忙型作业有更高的优先级。
40.【2014统考真题】下列调度算法中,不可能导致饥饿现象的是()。
A
采用静态优先级调度且系统总是出现优先级高的任务时,优先级低的任务总是得不到CPU而产生机饿现象;而短任务优先调度不管是抢占式的还是非抢占的,当系统总是出现新来的短任务时,长任务会总是得不到CPU,产生饥饿现象,因此选项B、C、D都错误。
采用静态优先级调度且系统总是出现优先级高的任务时,优先级低的任务总是得不到CPU而产生机饿现象;而短任务优先调度不管是抢占式的还是非抢占的,当系统总是出现新来的短任务时,长任务会总是得不到CPU,产生饥饿现象,因此选项B、C、D都错误。
41.【2016统考真题】某单CPU系统中有输入和输出设备各1台,现有3个并发执行的作业,每个作业的输入、计算和输出时间均分别为2ms,3ms和4ms,且都按输入、计算和输出的顺序执行,则执行完3个作业需要的时间最少是()。
B
42.
D
注意,系统是在t=2时开始作业调度的,此时J4还没有到达。FCFS调度算法的特点是作业来得越早,优先级就越高,因此选择J1。SJF调度算法的特点是作业运行时间越短,优先级就越高,因此选择J3
注意,系统是在t=2时开始作业调度的,此时J4还没有到达。FCFS调度算法的特点是作业来得越早,优先级就越高,因此选择J1。SJF调度算法的特点是作业运行时间越短,优先级就越高,因此选择J3
43.【2017统考真题】下列有关基于时间片的进程调度的叙述中,错误的是()
B
进程切换带来系统开销,切换次数越多,开销越大,A正确。当前进程的时间片用完后,其状态由执行态变为就绪态,B错误。时钟中断是系统中特定的周期性时钟节拍,操作系统通过它来确定时间间隔,实现时间的延时和任务的超时,C正确。现代操作系统为了保证性能最优,通常根据响应时间、系统开销、进程数量、进程运行时间等因素确定时间片大小,D正确。
进程切换带来系统开销,切换次数越多,开销越大,A正确。当前进程的时间片用完后,其状态由执行态变为就绪态,B错误。时钟中断是系统中特定的周期性时钟节拍,操作系统通过它来确定时间间隔,实现时间的延时和任务的超时,C正确。现代操作系统为了保证性能最优,通常根据响应时间、系统开销、进程数量、进程运行时间等因素确定时间片大小,D正确。
44.【2018统考真题】某系统采用基于优先权的非抢占式进程调度策略,完成一次进程调度和进程切换的系统时间开销为1μS。在T时刻就绪队列中有3个进程P1、P2和P3,其在就绪队列中的等待时间、需要的CPU时间和优先权如下表所示。
D
由优先权可知,进程的执行顺序为P2→P3→P1。P2的周转时间为1+15+24=40μS;P3的周转时间为18+1+24+1+36=80μs:P1的周转时间为30+1+24+1+36+1+12=105μs:平均周转时间为(40+80+105)/3=225/3=75us,因此选择选项D。
由优先权可知,进程的执行顺序为P2→P3→P1。P2的周转时间为1+15+24=40μS;P3的周转时间为18+1+24+1+36=80μs:P1的周转时间为30+1+24+1+36+1+12=105μs:平均周转时间为(40+80+105)/3=225/3=75us,因此选择选项D。
45.【2019统考真题】系统采用二级反馈队列调度算法进行进程调度。就绪队列Q1采用时间片轮转调度算法,时间片为10s;就绪队列Q2采用短进程优先调度算法;系统优先调度Q1队列中的进程,当Q1为空时系统才会调度Q2中的进程;新创建的进程首先进入Q1;Q1中的进程执行一个时间片后,若未结束,则转入Q2。若当前Q,Q2为空,系统依次创建进程P1,P2后即开始进程调度,P1,P2,需要的CPU时间分别为30ms和20ms,则进程P1,P2,在系统中的平均等待时间为()。
C
46.【2020统考真题】下列与进程调度有关的因素中,在设计多级反馈队列调度算法时需要考虑的是()。
Ⅰ.就绪队列的数量
Ⅱ.就绪队列的优先级
Ⅲ.各就绪队列的调度算法
Ⅳ.进程在就绪队列间的迁移条件
D
多级反馈队列调度算法需要综合考虑优先级数量、优先级之间的转换规则等,就绪队列的数量会影响长进程的最终完成时间,I正确;就绪队列的优先级会影响进程执行的顺序,Ⅱ正确;各就绪队列的调度算法会影响各队列中进程的调度顺序,Ⅲ正确;进程在就绪队列中的迁移条件会影响各进程在各队列中的执行时间,Ⅳ正确。
多级反馈队列调度算法需要综合考虑优先级数量、优先级之间的转换规则等,就绪队列的数量会影响长进程的最终完成时间,I正确;就绪队列的优先级会影响进程执行的顺序,Ⅱ正确;各就绪队列的调度算法会影响各队列中进程的调度顺序,Ⅲ正确;进程在就绪队列中的迁移条件会影响各进程在各队列中的执行时间,Ⅳ正确。
47.【2021统考真题】在下列内核的数据结构或程序中,分时系统实现时间片轮转调度需要使用的是()。
Ⅰ.进程控制块
Ⅱ.时钟中断处理程序
Ⅲ.进程就绪队列
Ⅳ.进程阻塞队列
C
时钟中断处理程序是一种特殊的中断处理程序,它负责在每个时钟周期结束时执行一些操作,如内核中时钟变量的值、当前进程占用CPU的时间、当前进程在时间片内的剩余执行时间。时钟中断处理程序的触发条件是系统定时器(一种可编程的硬件芯片)以固定的频率(称为节拍率)产生一个中断信号,通知CPU进行中断处理。在分时系统的时间片轮转调度中,时钟中断处理程序如果检查到当前进程的时间片用完,就触发进程调度,调度程序从就绪队列中选择一个进程为其分配时间片,并且修改该进程的进程控制块中的进程状态等信息,同时将时间片用完的进程放入就绪队列或让其结束运行,I、Ⅱ、Ⅲ正确。阻塞队列中的进程只有被唤醒并进入就绪队列后,才能参与调度,所以该调度过程不使用阻塞队列。
时钟中断处理程序是一种特殊的中断处理程序,它负责在每个时钟周期结束时执行一些操作,如内核中时钟变量的值、当前进程占用CPU的时间、当前进程在时间片内的剩余执行时间。时钟中断处理程序的触发条件是系统定时器(一种可编程的硬件芯片)以固定的频率(称为节拍率)产生一个中断信号,通知CPU进行中断处理。在分时系统的时间片轮转调度中,时钟中断处理程序如果检查到当前进程的时间片用完,就触发进程调度,调度程序从就绪队列中选择一个进程为其分配时间片,并且修改该进程的进程控制块中的进程状态等信息,同时将时间片用完的进程放入就绪队列或让其结束运行,I、Ⅱ、Ⅲ正确。阻塞队列中的进程只有被唤醒并进入就绪队列后,才能参与调度,所以该调度过程不使用阻塞队列。
48.【2021统考真题】下列事件中,可能引起进程调度程序执行的是()。
Ⅰ.中断处理结束
Ⅱ.进程阻塞
Ⅲ.进程执行结束
Ⅳ.进程的时间片用完
D
中断处理阶段运行的是中断处理程序,中断处理结束后,需要返回原程序或重新选择程序运行,而后者需要进行进程调度,例如在时间片轮转调度中,时钟中断处理结束后,若当前进程的时间片用完,则会发生进程调度。当前进程阻塞时,将其放入阻塞队列,若就绪队列不空,则调度新进程执行。进程执行结束会导致当前进程释放CPU,并从就绪队列中选择一个进程获得 CPU。进程时间片用完,会导致当前进程让出CPU,同时选择就绪队列的队首进程获得CPU。
中断处理阶段运行的是中断处理程序,中断处理结束后,需要返回原程序或重新选择程序运行,而后者需要进行进程调度,例如在时间片轮转调度中,时钟中断处理结束后,若当前进程的时间片用完,则会发生进程调度。当前进程阻塞时,将其放入阻塞队列,若就绪队列不空,则调度新进程执行。进程执行结束会导致当前进程释放CPU,并从就绪队列中选择一个进程获得 CPU。进程时间片用完,会导致当前进程让出CPU,同时选择就绪队列的队首进程获得CPU。
49.
C
需要注意的是,在0时刻,P0获得CPU也是一次进程调度,故0时刻调度进程Po获得CPU;10ms时P2进入就绪队列,调度P2抢占获得CPU;15ms时P3进入就绪队列,调度P3抢占获得CPU;25ms时P3执行完毕,调度P2获得CPU;40ms时P2执行完毕,调度P0获得CPU:130ms时P0执行完毕,调度P1获得CPU;190ms时P1执行完毕,结束;总共调度6次。
需要注意的是,在0时刻,P0获得CPU也是一次进程调度,故0时刻调度进程Po获得CPU;10ms时P2进入就绪队列,调度P2抢占获得CPU;15ms时P3进入就绪队列,调度P3抢占获得CPU;25ms时P3执行完毕,调度P2获得CPU;40ms时P2执行完毕,调度P0获得CPU:130ms时P0执行完毕,调度P1获得CPU;190ms时P1执行完毕,结束;总共调度6次。
50. 若系统采用基于优先权的抢占式CPU调度算法,从Os时刻开始进行调度,则P1、P2和P3的平均周转时间为()。
B
二、综合应用题
01.为什么说多级反馈队列调度算法能较好地满足各类用户的需要?
多级反馈队列调度算法能较好地满足各种类型用户的需要。对终端型作业用户而言,由于它们提交的作业大多属于交互型作业,作业通常比较短小,系统只要能使这些作业在第1级队列所规定的时间片内完成,便可使终端型作业用户感到满意;对于短批处理作业用户而言,它们的作业开始时像终端型作业一样,若仅在第1级队列中执行一个时间片即可完成,便可获得与终端型作业一样的响应时间,对于稍长的作业,通常也只需要在第2级队列和第3级队列中各执行一个时间片即可完成,其周转时间仍然较短;对于长批处理作业用户而言,它们的长作业将依次在第1,2,…,n级队列中运行,然后按时间片轮转方式运行,用户不必担心其作业长期得不到处理。
02.
[!NOTE] SJF的平均周转时间肯定是最短的,计算完毕后可以利用这个性质进行检验